#!/usr/bin/env node
/*
 * Copyright © 2018, Octave Online LLC
 *
 * This file is part of Octave Online Server.
 *
 * Octave Online Server is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the License,
 * or (at your option) any later version.
 *
 * Octave Online Server is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with Octave Online Server.  If not, see
 * <https://www.gnu.org/licenses/>.
 */

// Parse command-line options
var options = {
	port: {
		abbr: "p",
		metavar: "PORT",
		help: "Which port to listen for connections",
		oo_config: "url.port"
	}
};
var args = require("nomnom")
	.script("app.js")
	.options(options).parse();

// Save options into the Config hash
var Config = require("./build/config");
Object.keys(args).forEach(function (key) {
	if (!options[key]) return;
	var cfg = Config, path = options[key].oo_config.split(".");
	path.slice(0, -1).forEach(function (v) { cfg = cfg[v]; });
	cfg[path[path.length - 1]] = args[key];
});

// Pre-initialization: add timestamps to console messages
require("console-stamp")(console, "[d mmm HH:MM:ss.l]");

// Require application code
require("./build/app");
